跳到主要内容

Shor 算法

阐述

问题

给定合数 NN,找到 1<p<N1<p<N 使得 N/pZ+N/p\in\mathbb Z^+

经典部分

首先确定 NN 不是偶数且不是任何正整数的幂。

  1. 随机选取 1<a<N1<a<N,计算 gcd(a,N)\operatorname{gcd}(a,N),如果它不为 1,则问题解决;
  2. 寻找最小的正整数 rr 使得 ar1modNa^r\equiv 1\mod N
  3. 如果 rr 是偶数且 ar/2≢1modNa^{r/2}\not\equiv -1\mod N,则 gcd(ar/21,N)\operatorname{gcd}(a^{r/2}-1,N)gcd(ar/2+1,N)\operatorname{gcd}(a^{r/2}+1,N) 都是 NN 的非平凡因子;
  4. 否则返回步骤 1。

量子部分

解释

构造如下酉变换

Uay(modN)=ay(modN)U_{a}|y \quad(\bmod N)\rangle=|a y \quad(\bmod N)\rangle

它是可逆的,因为可以通过 Euclidean 算法找出 aa 的逆元。注意到它有如下形式的本征态(k=0,,r1k=0,\cdots,r-1

ζk=1r(1+e2πik/ra+e4πik/ra2+e2π(r2)k/rar2+e2π(r1)k/rar1)\left|\zeta_{k}\right\rangle=\frac{1}{r}\left(|1\rangle+e^{2 \pi i k / r}|a\rangle+e^{4 \pi i k / r}\left|a^{2}\right\rangle+\ldots e^{2 \pi(r-2) k / r}\left|a^{r-2}\right\rangle+e^{2 \pi(r-1) k / r}\left|a^{r-1}\right\rangle\right)

满足 Uaζk=e2πk/rζkU_{a}\left|\zeta_{k}\right\rangle = e^{-2 \pi k / r}\left|\zeta_{k}\right\rangle。若 NNLL-bit 数字,我们使用第一组寄存器长度为 2L2L,第二组为 LL,则上述电路给出 d/22Lk/rd/2^{2L}\approx k/r 对于某个未知的 kk。由于 k,rk,r 最多为 LL 位,我们可以用连分数展开来获取 rr

实例

性质

相关内容

参考文献